ORMのリレーションで出来ること
3.エクストラフィールドで多対多のリレーション
ManyToManyFieldの through 引数
Person Group
多:多
Membership
中間モデルに項目を持たせて、自分で定義したい場合
4.一対一のリレーション
OneToOneField
Place
1:1
Restaurant
モデルを継承して項目追加する代わりに
OneToOneField で項目追加したモデルを作る
!
継承ができないかというと、そうではない
25.
モデルの継承
1.抽象ベースクラス
CommonInfo
継承
Student
親は実体を持たない
class CommonInfo(models.Model):
class Meta:
abstract = True
2.マルチテーブル継承
Place
継承
Restaurant
親も子も実体を持つ
class Place(models.Model):
class Student(CommonInfo): class Restaurant(Place):
3.プロキシモデル
User
継承
MyUser
from django.contrib.auth.models import User
子は実体を持たない
子は項目追加できない
親のメソッドを拡張したい時
class MyUser(User):
class Meta:
proxy = True
!
def do_something(self):
...
feedbackで返された
トークンは、削除する
for(token_hex, fail_time) in apns.feedback_server.items():
#未使用のデバイストークンを削除
for token in DeviceToken.objects.filter(token=token_hex):
token.delete()
!
ログイン パスワードの暗号化
AES復号化の部分
from Crypto.Cipher import AES
from Crypto import Random
!
def aes_decrypt(string, key=None):
''' AESで復号化 '''
if not key or len(key) not in (16, 128, 192, 256):
raise ValueError('Key size must be 16, 128, 192, 256')
bs = AES.block_size
iv = Random.new().read(bs)
cipher = AES.new(key.encode(), AES.MODE_ECB, iv)
!
plaintext = cipher.decrypt(string)
return plaintext.decode().rstrip('0')