Бизнес-экземпляр должен иметь значение первичного ключа, прежде чем можно будет использовать отношение многие ко многим - PullRequest
0 голосов
/ 26 января 2012

Я изменил регистрационный код Django. Я вставляю данные в модель UserProfile и Business во время регистрации. Данные сохраняются в UserProfile Модель.

#TODO: saving contact and address field data into UserProfile
user_profile = new_user.get_profile()
user_profile.user = new_user
user_profile.contact, user_profile.address = contact, kwargs['address']
user_profile.save()

Следующий код не работает. Получение этой ошибки. 'Business' instance needs to have a primary key value before a many-to-many relationship can be used.

#TODO: saving business field data into Business Model
user_business = Business()
user_business.owner = new_user
user_business.name = business
user_business.save()

спасибо UPDATE

class Business(models.Model):
name = models.CharField(max_length=100)
slug = models.SlugField(max_length=100)
owner = models.ManyToManyField(User)
created = models.DateTimeField(editable=False, default=datetime.now)
modified = models.DateTimeField(editable=False, default=datetime.now)

class Meta:
    ordering = ['name']

def save(self):
    self.modified = datetime.now()
    if not self.slug:
        self.slug = slugify(self.name, instance=self)
    super(Business, self).save()

1 Ответ

1 голос
/ 26 января 2012

Попробуйте обновить свой пользовательский код до:

def save(self, *args, **kwargs):
    self.modified = datetime.now()
    if not self.slug:
        self.slug = slugify(self.name)
    super(Business, self).save(*args, **kwargs)

UPDATE

@ no_access Я думаю, что существует проблема при назначении экземпляра User для ManyToManyField в Business. Я подозреваю, что поле ManyToManyField не получает ссылку на создаваемый экземпляр User. Таблица intermediate поля ManyToManyField нуждается в правильном объекте User для ссылки. Итак, я думаю, что здесь кроется проблема.

...