0
インスタンスを保存する前に値を取得できないという問題が発生しています。 save()
メソッドで更新された値が返されます。また、あまりにも多くのクエリを実行しているので、私は__init__
に格納できません。Djangoモデルに保存する前に属性を取得する
class Users(models.Model):
username = models.CharField(max_length=20)
class Groups(models.Model):
name = models.CharField(max_length=100)
user = models.ManyToManyField(Users)
'''def __init__(self, *args, **kwargs):
super(Groups, self).__init__(*args, **kwargs)
#store original values
for field in Groups._meta.get_fields():
f = field
if not f.many_to_many:
setattr(self, '__original_%s' % f.name, getattr(self, f.name))
else:
userlist = Users.objects.all().filter(groups__id=self.pk)
setattr(self, '__original_userlist', set(userlist)) #set() to force lazy query and get original value'''
#function trying to reproduce __init__
def store(self):
for field in Groups._meta.get_fields():
f = field
if not f.many_to_many:
setattr(self, '__original_%s' % f.name, getattr(self, f.name))
else:
userlist = Users.objects.all().filter(groups__id=self.pk)
setattr(self, '__original_userlist', set(userlist)) #set() to force lazy query
def save(self, *args, **kwargs):
self.store()
print(getattr(self, '__original_userlist')) #return the list with users
super(Groups, self).save(*args, **kwargs)
print(getattr(self, '__original_userlist')) #return the list with users
私はクエリを作成する必要があるため、私はアプローチする最良の方法はよく分からない。私は、ユーザーがここでインスタンス
は私のモデルが簡略化されていることを節約するだけでクエリを実行したいです。私は古い値と新しい値を比較するためにそれをやっています。そして、ログファイルに異なる値を格納することができます。