'project.Account' не имеет ForeignKey к 'project.Object': Как связать модель счета с объектами проекта?

Я пытаюсь создать сайт объявлений (All), который может быть виден другим (Users, для чего я добавил Account). Для этого я хотел немного изменить профиль пользователя, чтобы добавить такие поля, как телефон, адрес электронной почты...

Поэтому я изменил admin.py:

from django.contrib import admin
from .models import Todo, Account
from django.contrib.auth.models import User

class AccountInline(admin.StackedInline):
    model = Account
    can_delete = False
    verbose_name_plural = 'Accounts'

class TodoAdmin(admin.ModelAdmin):
    readonly_fields = ('created',)
    inlines = (AccountInline, )

admin.site.unregister(User)
admin.site.register(Todo, TodoAdmin)

Но вернулся:

<class 'todo.admin.AccountInline'>: (admin.E202) 'todo.Account' has no ForeignKey to 'todo.Todo'.

Поэтому я добавил ForeignKey к Todo с account = models.ForeignKey(Account, on_delete=models.CASCADE):

from django.db import models
from django.contrib.auth.models import User

class Account(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    email = models.CharField(max_length=100)
    firstname = models.CharField(max_length=30)
    lastname = models.CharField(max_length=50)
    company = models.CharField(max_length=5)

    def __str__(self):
        return self.user.username

class Todo(models.Model):
    title = models.CharField(max_length=100)
    datetime = models.DateTimeField()
    memo = models.TextField(blank=True)
    created = models.DateTimeField(auto_now_add=True)
    datecompleted = models.DateTimeField(null=True, blank=True)
    important = models.BooleanField(default=False)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    account = models.ForeignKey(Account, on_delete=models.CASCADE)


    def __str__(self):
        return self.title

Но у меня все еще ошибка.

  1. Вы случайно написали unregister для Users в вашем файле admin.py. Должно быть admin.site.register(User)
  2. .
  3. Вы неправильно интерпретировали ошибку: ошибка гласит, что у вас нет внешнего ключа в вашей модели Account к Todo.

Это означает, что ваш встроенный код администратора некорректен, поскольку он ожидает обратного.

Вернуться на верх