Django-Rest-Framework atualizando uma chave estrangeira por ID
Eu estou usando o django-rest-framework para construir o back-end. Eu tenho a lista funcionando bem, mas (usando a tela admin do django-rest-framework) eu não posso criar um objeto apenas usando os campos Id dos objetos de chave estrangeira. Eu espero ter configurado isto incorretamente, mas estou aberto para escrever algum código se eu tiver que :) Eu estou aprendendo django / python de um fundo .NET e Java e pode ter se tornado um pouco estragado por esta nova pilha.
Edit: Eu estou tentando não usar duas classes de modelos diferentes, eu não deveria ter que certo?
Desde já, obrigado.
Do Chrome - os principais bits do pedido
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 }
A resposta
HTTP 400 BAD REQUEST
Vary: Accept
Content-Type: text/html; charset=utf-8
Allow: GET, POST, HEAD, OPTIONS
{
"user": [
"This field is required."
]
}
Ugh Aqui estão as principais classes do 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'
)
Editar Adicionando o viewset:
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
A funcionalidade get / list gera JSON decente:
{"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 "}}}}