Il problema principale è che è necessario utilizzare il metodo POST per inviare i dati alla chiave esterna.
I have a model with a foreign key. I am trying to post data to this model using the Django Rest Framework. How do I post data to the foreign key?
<code>class Model1(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
class Model2(models.Model):
name = models.CharField(max_length=100)
model1 = models.ForeignKey('Model1', on_delete=models.CASCADE, related_name='model2')
def __str__(self):
return self.name
class Model2Serializer(serializers.ModelSerializer):
class Meta: # noqa: D106,D205,D400,E501 # pylint: disable=too-few-public-methods,missing-docstring,line-too-long,no-init # noqa: D105 # pylint: disable=R0903 # noqa: D102 # pylint: disable=R0901
model = Model2
fields = ['id', 'name', 'model1']
</code>
Questo codice definisce due modelli, Model1 e Model2e un serializzatore per Model2.
Model1 ha un campo chiamato name.
Model2 ha un campo chiamato name, e un campo chiave esterna chiamato model1. La chiave esterna si collega al file Model1.
Il serializzatore per Model2Serializer, definisce quali campi devono essere inclusi durante la conversione del modello in formato JSON. In questo caso, include i campi: id, name, and 'model1'.
Save Foreign Key Using Django Rest Framework
In Django, you can use the save_foreign_key() function to save a foreign key in a model. This function takes two arguments: the model name and the name of the column in the model that stores the foreign key.
To save a foreign key in a model named "MyModel", you would use the following code:
save_foreign_key("MyModel", "id")
What is Foreign key
A foreign key is a column in a table that references a column in another table. When you insert data into the table, Django automatically creates the foreign key for you.