اذهب إلى المحتوى

السؤال

نشر

اضطررت إلى إعادة كتابة نموذج المستخدم الخاص بي لإضافة بعض الحقول ، لقد استخدمت AbstractUser كالتالي

class Article(models.Model):
    author = models.ForeignKey(User , null=True, on_delete=models.SET_NULL , related_name='articles' , verbose_name='test')...

account app

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    is_authour = models.BooleanField(default=False, verbose_name="test")
    special_user = models.DateTimeField(default=timezone.now, verbose_name="test")    

    def is_special_user(self):
        if self.special_user > timezone.now():
            return True
        else:
            return False 
    
    is_special_user.boolean = True
    is_special_user.short_description = "Test description"

لقد قمت باستيراد طريقة عرض المستخدم الخاصة بي بهذه الطريقة:

from account.models import User

وأضفت هذا إلى الإعدادات

AUTH_USER_MODEL = 'account.User'

عندما أقوم بالترحيل ، أتلقى هذا الخطأ:

blog.Article.author: (fields.E301) Field defines a relation with the model 'auth.User', which has been swapped out. HINT: Update the relation to point at 'settings.AUTH_USER_MODEL'.

 بحثت عن خطأي ولكن لا يمكنني العثور عليه, أرجو منكم المساعدة

Recommended Posts

  • 0
نشر

يتم وجود هذا الخطأ بسبب أن نموذج المستخدم الافتراضي في جانجو auth.User قد تم تعديله باستخدام AbstractUser في التطبيق الخاص بك account.User. ومع ذلك ، يتم الإشارة إلى النموذج الافتراضي في الحقل الخاص بك Article.author كموديل خاص بمستخدمي Django الذي تم تعديله.

لحل هذا المشكلة ، يمكنك تغيير الحقل author في النموذج Article بحيث يشير إلى نموذج المستخدم الخاص بك. ويمكنك القيام بذلك عن طريق استخدام settings.AUTH_USER_MODEL بدلاً من User عند تعريف الحقل ، على النحو التالي:

from django.conf import settings

class Article(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.SET_NULL, related_name='articles', verbose_name='test')

وبذلك ، يشير الحقل author الآن إلى نموذج المستخدم المخصص الخاص بك بدلاً من نموذج المستخدم الافتراضي في Django.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...