Django-Rest-Framework aktualisiert einen Fremdschlüssel BY Id
Ich benutze Django-Rest-Framework, um das Backend aufzubauen. Ich habe die Liste in Ordnung, kann aber (unter Verwendung des Administrationsbildschirms von Django-Rest-Framework) kein Objekt erstellen, indem ich nur die ID-Felder der Fremdschlüsselobjekte verwende. Ich hoffe, dass ich das falsch konfiguriert habe, aber ich bin offen dafür, Code zu schreiben, wenn ich muss :) Ich lerne Django / Python von einem .NET- und Java-Hintergrund und bin möglicherweise ein durch diesen neuen Stapel verdorbener Touch geworden.
Bearbeiten: Ich versuche, nicht zwei verschiedene Modellklassen zu verwenden - ich sollte nicht richtig müssen?
Danke im Voraus.
Von Chrome - die Schlüsselbits der Anfrage
Request URL:http://127.0.0.1:8000/rest/favorite_industries/
Request Method:POST
_content_type:application/json
_content:{
"user_id": 804 ,"industry_id": 20 }
Die Antwort
HTTP 400 BAD REQUEST
Vary: Accept
Content-Type: text/html; charset=utf-8
Allow: GET, POST, HEAD, OPTIONS
{
"user": [
"This field is required."
]
}
Pfui. Hier sind die wichtigsten Klassen von Django:
class FavoriteIndustry(models.Model):
id = models.AutoField(primary_key=True)
user = models.ForeignKey(User, related_name='favorite_industries')
industry = models.ForeignKey(Industry)
class Meta:
db_table = 'favorites_mas_industry'
class FavoriteIndustrySerializer(WithPkMixin, serializers.HyperlinkedModelSerializer):
class Meta:
model = myModels.FavoriteIndustry
fields = (
'id'
, 'user'
, 'industry'
)
Bearbeiten Hinzufügen des Viewsets:
class FavoriteIndustriesViewSet(viewsets.ModelViewSet):
#mixins.CreateModelMixin, viewsets.GenericViewSet):
paginate_by = 1
queryset = myModels\
.FavoriteIndustry\
.objects\
.select_related()
print 'SQL::FavoriteIndustriesViewSet: ' + str(queryset.query)
serializer_class = mySerializers.FavoriteIndustrySerializer
Die Get / List-Funktionalität generiert ordentliches JSON:
{"count": 2, "next": "http://blah.com/rest/favorite_industries/?page=2&format=json"," previous ": null," results ": [{" id ": 1," user ":"http://blah.com/rest/users/804/"," industry ": {" industry_id ": 2," industry_name ":" Consumer Discretionary "," parent_industry_name ":" Consumer Discretionary "," category_name ":" Industries "}]}