Jestem modelem podanym poniżej /
class UserWidgetMapping(models.Model):
user = models.ForeignKey(AuthUser)
widget_string = models.CharField(max_length=600L)
class Meta:
db_table = "user_widget_mapping"
Kiedy wykonuję zapytanie user_widgets = UserWidgetMapping.objects.filter(user_id = user_id)
rzuca błąd mówiąc (1054, "Unknown column "user_widget_mapping.id" in "field list"")
. Wiem, że Django automatycznie przypisuje identyfikator do modelu automatycznie, ale nie chcę identyfikatora wewnątrz tego modelu. W tym celu muszę podać atrybut primarykey = True
. Ponieważ jednak klucz obcy staje się kluczem podstawowym własnego tabltu, jak mogę wykonać to zapytanie?
Odpowiedzi:
0 dla odpowiedzi № 1Dlaczego nie chcesz identyfikatora? Nie ma sensu, aby klucz ForeignKey był kluczem podstawowym, ponieważ nie jest to unikatowe: kluczem obcego jest to, że jest to relacja wiele do jednego, więc wiele UserWidgetMappings może wskazywać na tego samego AuthUser, a więc mieć ta sama wartość dla user_id
. Jeśli nie chcesz tego, powinieneś zamiast tego używać OneToOneField.
Nie rozumiem jednak pozostałej części pytania na temat zapytania: nie widzę, dlaczego coś by się zmieniło, jeśli dasz primary_key=True
przypisują user
.