0

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()
AHTOHuO
  • 3
  • 3

0 Answers0