Λύθηκε: πώς να δημοσιεύσετε δεδομένα σε ξένο κλειδί στο πλαίσιο django rest

Το κύριο πρόβλημα είναι ότι πρέπει να χρησιμοποιήσετε τη μέθοδο POST για να στείλετε δεδομένα στο ξένο κλειδί.

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>

Αυτός ο κώδικας ορίζει δύο μοντέλα, Model1 και Model2, και ένα σειριακό πρόγραμμα για Model2.
Model1 έχει ένα πεδίο που ονομάζεται name.
Model2 έχει ένα πεδίο που ονομάζεται nameκαι ονομάζεται πεδίο ξένου κλειδιού model1. Το ξένο κλειδί συνδέεται με το Model1.
Ο σειριακός για Model2Serializer, ορίζει ποια πεδία πρέπει να περιλαμβάνονται κατά τη μετατροπή του μοντέλου σε μορφή JSON. Σε αυτήν την περίπτωση, περιλαμβάνει τα πεδία: 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.

Related posts:

Leave a Comment