Я не могу создать поле OneToOneField и поле ForeignKey в модели User?
У меня есть эти две модели
class TaskModel(models.Model):
user=models.ForeignKey(User,on_delete=models.CASCADE,primary_key=True)
name=models.CharField(max_length=100)
start=models.DateField()
end=models.DateField()
note=models.CharField(max_length=300)
class ProfileModel(models.Model):
user=models.OneToOneField(User,on_delete=models.CASCADE,
primary_key=True)
img=models.ImageField(upload_to='profileimg',blank=True)
desc=models.TextField(max_length=500)
occupation=models.CharField(max_length=100)
martial=models.CharField(max_length=50)
но когда я выполняю команду makemigrations, она показывает мне эту ошибку::
eg:- app.TaskModel.users: (fields.W342) Установка unique=True в ForeignKey имеет тот же эффект, что и использование поля OneToOneField. эффект, как и при использовании поля OneToOneField. СОВЕТ: ForeignKey(unique=True) обычно лучше обслуживается полем OneToOneField.
Вот моя проблема, я сделал TaskModel как ForeignKey, но он работает как OneToOne Filed. Я новичок в django, пожалуйста, помогите мне?
Это не ошибка, это предупреждение. Уникальные ForeignKey
- это, по сути, то, чем является OneToOneField
. primary_key=True
подразумевает unique=True
, следовательно, поле user
вашего TaskModel
лучше превратить в OneToOneField
:
from django.conf import settings
class TaskModel(models.Model):
user = models.OneToOneField(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
primary_key=True
)
name = models.CharField(max_length=100)
start = models.DateField()
end = models.DateField()
note = models.CharField(max_length=300)
Примечание: Обычно лучше использовать
settings.AUTH_USER_MODEL
[Django-doc] для ссылки на модель пользователя, чем использоватьUser
модель [Django-doc] напрямую. Для получения дополнительной информации вы можете посмотреть ссылка наUser
модель раздел документации .
Примечание: Модели обычно не имеют суффикса
Model
. Поэтому лучше переименоватьвTaskModel
Task
.