class Event (models.Model): name = models.CharField(max_length=100) date = models.DateField(default='') dicript = models.CharField(max_length=300,default='Описание отсутствует') category = models.ForeignKey('category',on_delete=models.CASCADE) adress = models.TextField(max_length=100) website = models.URLField(max_length=100,default='Web-сайт отсутствует') user = models.ForeignKey(User,related_name="creator",null=True) subs = models.ManyToManyField(User, related_name="subs") @classmethod def make_sub (cls,current_user,sub_event): event, created = cls.objects.get_or_create( current_user = user ) event.subs.add(sub_event) 

I try to create a subscription to the event through the console, it gives an error. I call the Make_Sub method and pass the user and event to which I want to subscribe - it gives an error invalid field name (s) for model Event: 'current_user'.

  • Well, because you really have no such field - andreymal
  • Fields current_user? - rumor
  • Yeah, you have a user field and the current_user variable in the method, but there is no current_user field - andreymal
  • So in the method you need user = current_user? - rumor

1 answer 1

You are trying to create a model with a field that does not exist. Correct will be:

 @classmethod def make_sub (cls,current_user,sub_event): event, created = cls.objects.get_or_create( user = user # Здесь надо исправить. Теперь пользователя вы присваиваете полю user в модели Event ) event.subs.add(sub_event) 
  • but now I cannot add an event Error: OperationalError at / admin / events / event / add / no such table: events_event_subs - rumor
  • rumor, i don't know. You have there on the subs indicated relation to the user, in general. And the error gives that there is no such table. If it's difficult with such things, then maybe you would be better off going back to basics. - Mr. Fix