2015-08-05 4 views
0

Я создал пользовательскую модель, которая работает нормально. Проблема заключается в том, когда доступ пользователя из внешнего ключа, он бросает мне:Пользовательская модель не работает во внешнем ключе

подробность: Key (author_id) = (51) нет в таблице "AUTH_USER".

Моего заказ пользователь USERAUTH, очевидно, модель все еще ищет оригинальный пользователь модель вместо обычая один.

Вот что я сделал:

#settings.py 
AUTH_USER_MODEL = 'userauth.UserAuth' 

#models.py 
from django.conf import settings 
User = settings.AUTH_USER_MODEL 

class Post(models.Model): 
    title = models.CharField(max_length=255) 
    content = models.TextField() 
    author = models.ForeignKey(User, null=True,blank=True,default=None) 

#admin.py 
class AdminPost(admin.ModelAdmin): 
    def save_model(self, request, obj, form, change): 
     if getattr(obj, 'author', None) is None: 
      obj.author = request.user 
     obj.save() 

ответ

0

Я хотел бы сделать что-то вроде этого вместо (не беспокоить назначая переменные):

models.py:

from django.conf import settings 

class Post(models.Model): 
    title = models.CharField(max_length=255) 
    content = models.TextField() 
    # You don't need 'default=None' 
    author = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True) 
+0

Да , Ты прав. Проблема «default = None» вызвала проблему. Интересно, почему это повлияет на пользовательскую модель. –

+0

@ dev-jim Когда вы устанавливаете 'default = None', вы переопределяете ForeignKey и говорите:« Сделать поле равным нулю ». Затем, пытаясь вызвать это поле, вы пытаетесь ничего не называть. По сути, у вас есть разговор без тела, когда вы пытаетесь вызвать его из базы данных. – jape

+0

Спасибо за объяснение! –

Смежные вопросы