[英]how to add a new record to a Many To Many Field
I'm working on a small project using Django / Rest Framework, I have two models ( Contact & List ) I have Many To Many field, in Contact called list.我正在使用 Django / Rest 框架进行一个小项目,我有两个模型(联系人和列表)我有多对多字段,在联系人称为列表。
I would like to know how can I add a record to this relation ( Many To Many Field ).我想知道如何将记录添加到此关系(多对多字段)。
from django.db import models
# Create your models here.
class List(models.Model):
name = models.CharField(blank=False, max_length=255)
comment = models.CharField(blank=False, max_length=255)
private = models.BooleanField(default=False)
allowed = models.BooleanField(default=False)
def __str__(self):
return self.name
This is my Contact Model这是我的联系人 Model
from django.db import models
from django.conf import settings
from list.models import List
# Create your models here.
class Contact(models.Model):
# field variables
language_choices = (
('french', 'french'),
('english', 'english'),
)
""" Relations Between Models """
list = models.ManyToManyField(List)
I looked for a solution for a long time.我找了很长时间的解决方案。 Here is my method.这是我的方法。
models.py模型.py
class Candidate(models.Model):
skills = models.ManyToManyField(Skill, through='SkillExperience')
class SkillExperience(models.Model):
"""Skills and experiences for a candidate"""
skill = models.ForeignKey(Skill, on_delete=models.CASCADE, related_name='skill_to_candidate')
candidate = models.ForeignKey(Candidate, on_delete=models.CASCADE, related_name='candidate_to_skill')
experience = models.ForeignKey(Experience, on_delete=models.CASCADE, related_name='experience_to_candidate', default=1)
serializer.py序列化程序.py
class CandidateSkillExperienceSerializer(serializers.ModelSerializer):
experience = ExperienceSerializer(many=False, allow_null=True)
skill = SkillSerializerLite(many=False, allow_null=False)
class Meta:
model = SkillExperience
fields = ('skill', 'experience')
class CandidateSerializer(serializers.ModelSerializer):
candidate_to_skill = CandidateSkillExperienceSerializer(many=True, required=False, allow_null=True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.