【发布时间】:2020-07-16 23:58:02
【问题描述】:
我想将 Available classic 中的项目添加到 Chosen classic
我该怎么做,如下图所示
我可以通过
获得Chosen classicProfile.objects.get(user=request.user).classic.add(id=2)
但我无法将 Available classic 中的 iem 添加到 Chosen classic
请任何人都可以快速解决这个问题 谢谢大家
Models.py
from django.db import models
# Create your models here.
from django.utils import timezone
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
class Language(models.Model):
language = models.CharField(
max_length=2,
choices=[
('AR', 'Arabic'),
('EN', 'English'),
],
default='AR'
)
def __str__(self):
return self.language
class Classic(models.Model):
name = models.CharField(max_length=50, blank=False, null=False)
music = models.FileField(upload_to='', max_length=100, blank=True, null=True)
lang = models.ForeignKey(Language, on_delete=models.CASCADE)
def __str__(self):
return self.name
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
classic = models.ManyToManyField(Classic, blank=True, null=True)
workOut = models.ManyToManyField(WorkOut, blank=True, null=True)
chillOut = models.ManyToManyField(ChillOut, blank=True, null=True)
romantic = models.ManyToManyField(Romantic, blank=True, null=True)
happy = models.ManyToManyField(Happy, blank=True, null=True)
sad = models.ManyToManyField(Sad, blank=True, null=True)
lang = models.ManyToManyField(Language, blank=True, null=True)
def __str__(self):
return str(self.user)
def update_user_profile(sender, **kwargs):
if kwargs['created']:
user = Profile.objects.create(user=kwargs['instance'])
post_save.connect(update_user_profile,sender=User)
Admin.py
from django.contrib import admin
# Register your models here.
from . import models
class ClassicAdmin(admin.TabularInline):
model = models.Classic
class PlayLists(admin.ModelAdmin):
inlines = [ClassicAdmin]
class Favo(admin.ModelAdmin):
filter_horizontal = ['classic']
admin.site.register(models.Language, PlayLists)
admin.site.register(models.Profile, Favo)
我的代码有什么问题 谢谢大家
【问题讨论】:
-
我无法从可用经典中添加是什么意思?你有什么错误吗?
-
是的,从视图而不是管理面板添加时会出错
-
尝试将实例传递给
.add(),而不是id。喜欢user.groups.add(group_instance)。它应该可以工作。 -
user.groups.add(group_instance)请插入代码中的示例
标签: python django django-models django-views many-to-many