Ich habe versucht, einige Modelle zu erstellen. Ich habe mir einige Beispiele angeschaut, aber die meisten funktionieren nicht. Beispiel:Django Mehrfachvererbung mit verschiedenen Tabellen
class Piece(models.Model):
name = models.CharField(max_length=100)
class Meta:
abstract = True
class Article(Piece):
pass
class Book(Piece):
pass
class Monday(Book, Article):
pass
class Tuesday(Book, Article):
pass
Also mein Ziel ist es, den Wert mit so etwas zu bekommen ->Monday.Article.name
. Ich möchte für jeden Wochentag verschiedene Tabellen haben, die den Namen des Artikels enthalten. Dies ist der Fehler, den ich bekomme:
ERRORS:
Testing.Monday: (models.E005) The field 'id' from parent model 'Testing.book' clashes with the field 'id' from parent model 'Testing.article'.
Testing.Monday: (models.E005) The field 'name' from parent model 'Testing.book' clashes with the field 'name' from parent model 'Testing.article'.
Testing.Tuesday: (models.E005) The field 'id' from parent model 'Testing.book' clashes with the field 'id' from parent model 'Testing.article'.
Testing.Tuesday: (models.E005) The field 'name' from parent model 'Testing.book' clashes with the field 'name' from parent model 'Testing.article'.
Es sieht aus wie mein Artikel und Buch verwenden den gleichen Namen. Wie funktioniert das?
EDIT: diese Verwendung:
class Article(Piece):
article_id = models.AutoField(primary_key=True)
class Book(Piece):
book_id = models.AutoField(primary_key=True)
in diesem Fehler führen:
Testing.Monday: (models.E005) The field 'piece_ptr' from parent model
'Testing.book' clashes with the field 'piece_ptr' from parent model
'Testing.article'.
Die einzige Lösung ist dies: article_to_piece = models.OneToOneField(Piece, parent_link=True)
Aber das wird nicht eine Verknüpfung zwischen den Tagen erzeugen und ein Buch/Artikel. Ich kann nur einen Namen zum Tag hinzufügen.
Dies ist eine wirklich schlechte Idee lösen . Verwenden Sie einfach eine einzelne Tabelle mit einem "Tag" -Feld. –
Nun, ich denke ich muss es auf deine Art machen! Kannst du mir erklären, warum mein Ansatz schlecht ist? Abgesehen von der Tatsache, dass es nicht funktioniert – ExceptionFinder