Another question form novice. I have some form:
class SomeForm(forms.ModelForm):
...
def save(self, commit=False):
instance = SomeModel(field='value1')
instance.userid = self.request.user.id
instance.delete()
instance = SomeModel(field='value2')
instance.userid = self.request.user.id
instance.save()
In post_save signal:
@receiver(post_save,sender=SomeModel)
def pre_save_model(sender,instance,**kwargs):
print(instance.userid)
it works fine. But in post_delete:
@receiver(post_delete,sender=SomeModel)
def post_delete_model(sender,instance,**kwargs):
print(instance.userid)
it says:
AttributeError: 'SomeModel' object has no attribute 'userid'
I guess, than I can't understand something important. But what?
Update:
I realized:
That was an error :
instance = SomeModel(field='value1')
instance.userid = self.request.user.id
instance.delete()
should be
instance = SomeModel.objects.filter(field='value1')
instance.userid = self.request.user.id
instance.delete()
So, instance is an QuerySet. Further it must be processed for every object of instance:
def save(self, commit=False):
queryset = SomeModel.objects.filter(field='value1')
for instance in queryset:
instance.userid = self.request.user.id
instance.delete()
instance = SomeModel(field='value2')
instance.userid = self.request.user.id
instance.save()