/ / Django - podstawowe odwzorowanie identyfikatora klucza - django, django-models

Odwzorowanie klucza podstawowego Django - django, django-models

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 № 1

Dlaczego 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.