Many to many field error __call__() missing 1 required keyword-only argument: 'manager'

enter image description hereFirst of all, sorry for using a translator as I can't speak English.

I'm using the model and I keep running into problems with many to many. At first, I made it without giving an id value, but it seems that the id value is not entered, so when I put the id value directly, the same problem as above occurs. But in the Post model below, the same form of likes is used. Why?

from django.db import models
# from django.contrib.auth.models import User
from django.conf import settings 
# from server.apps.user.models import Profile

# Create your models here.
class Clothes(models.Model):
    (0, '상의'), #상의
    (1, '하의'), #하의
    (2, '아우터'), #아우터
    (3, '신발'), #신발
    (4, '악세사리'), #악세사리
  category = models.IntegerField(default=0,choices=CATEGORYS)
  id = models.IntegerField(primary_key=True)
  img = models.ImageField(upload_to='main/images/clothes/%Y/%m/%d')
  save = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='Pickitems', blank=True)
  author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
  buying = models.TextField(null=True, blank=True)
  def __str__(self):
    return f'{}: {self.category}'
    #pk가 존재하지 않는것 같음. 

# class SavePeople(models.Model):

class Post(models.Model):
  main_img = models.ImageField(upload_to='main/images/post/%Y/%m/%d')
  title = models.CharField(max_length=100)
  content = models.TextField()
  private = models.BooleanField(default=False)
  author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
  clothes = models.ManyToManyField(Clothes,related_name='Clothes')
  likes = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='Likes', blank=True)
  def __str__(self):
    return f'{}: {self.title}'
  def get_absolute_url(self):
    return f'/community/'
  #이거 나중에 detail page로 바꿔주세요
class Comment(models.Model):
  post = models.ForeignKey(Post, on_delete=models.CASCADE)
  author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
  content = models.TextField()
  create_date = models.DateTimeField(auto_now_add=True)
  update_date = models.DateTimeField(auto_now_add=True)
  def __str__(self):
    return f'({}) {} :  {self.content}'
class Commu(models.Model):
    ('buying', 'buying'), #공동구매
    ('openrun', 'openrun'), #오픈런
    ('question', 'question'), #고민방
  category = models.CharField(max_length=20, choices=COMMU_CHOICES)
  img = models.ImageField(upload_to='main/images/commu/%Y/%m/%d', null=True, blank=True)
  title = models.CharField(max_length=100)
  content = models.TextField()
  author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
  def __str__(self):
    return f'{}: {self.title}'
  def get_absolute_url(self):
    return f'/community/commu'

I added the code saves= models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='Save', blank=True) to the Clothes model to make a save of Clothes in the same way as the likes of the Post model, but an error like the attached picture is displayed. occurred. When I searched, it seemed that the pk value did not exist.

The issue is the id field that you explicitly provided, Django itself creates an id field as a primary key for each model if you don't specify one. So, it is not necessary to add it to the model. Kindly remove it through the Clothes model and run migration commands.

And it doesn't give in case of likes since there is no extra field id in Post model unlike that of Clothes.

Note: Models in Django doesn't require s to be added as suffix, as it is automatically done, so you may change Clothes to Cloth.

Back to Top