我有以下两种模型:
models.py
from django.db import models
from django.contrib.auth.models import User
class Skill(models.Model):
skill = models.CharField(max_length=50)
def __str__(self):
return self.skill
class Designer(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
description = models.TextField(max_length=500, blank=True)
date_created = models.DateField(auto_now_add=True)
profile_img = models.ImageField(upload_to="gallery",null=True, blank=True)
skills = models.ManyToManyField(Skill, blank=True)
experience = models.IntegerField(blank=True, null=True)
account_type = models.CharField(max_length=10)
def __str__(self):
return self.user.username
Designer模型是User模型的扩展,它与Skill模型具有ManyToMany关系。我可以从管理页面向设计器实例添加技能,但是没有删除选项。如何在管理页面上获取删除选项?我还想在按钮单击上添加删除功能。如何在代码中添加它?
答案 0 :(得分:1)
在ManyToMany
关系字段中,没有delete
功能,我们需要为此使用remove
的实例,或者为了清除字段值,我们需要使用clear
link
为您辩护
our_desire_skill = skills.objects.filter(skill=search_skill)
desiner_user = Designer.objects.get(user=our_desire_user)
desiner_user.skills.remove(our_desire_skill)
如果您想从管理页面更改ManyToManyFields
,需要确保该字段类似于raw_id_fields
link,那么您就可以从admin更新ManyToManyField
商店值现场。