Django Поле «Многие ко многим» add () получила неожиданный аргумент ключевого слова «id» - PullRequest
0 голосов
/ 05 апреля 2020

Я хочу добавить элементы от Доступные классы c до Выбранные классы c

Как я могу сделать это, как показано на рисунке ниже

Djano admin panel

я могу получить Выбранный класс c по

Profile.objects.get(user=request.user).classic.add(id=2)

но я не могу добавить токи от Доступные классы c до Выбранные классы c

любой может помочь быстро решить эту проблему, пожалуйста, спасибо за все

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)

что не так в моем коде спасибо за все

1 Ответ

0 голосов
/ 05 апреля 2020

работы Тана со мной

Profile.objects.get(user=request.user).classic.add(Classic.objects.get(id=1))
...