У меня есть следующий model.py
файл:
class CustomUser(AbstractUser):
created = models.DateTimeField(auto_now_add=True)
job = models.CharField(max_length=100, blank=True)
photo = models.FileField(upload_to='Images/',
default='Images/None/No-img.jpg')
def __str__(self):
return "%s%s" % (self.first_name, self.last_name)
class Meta:
ordering = ('created', )
class Clique(models.Model):
# holds when the clique was created
created = models.DateTimeField(auto_now_add=True)
# holds the name of the clique
name = models.CharField(max_length=100, blank=False)
# holds the members of the clique
members = models.ManyToManyField(CustomUser, blank=True)
def __str__(self):
return self.name
class Meta:
ordering = ('created', )
В принципе, у меня есть модель для пользователей и модель для кликов.
Пользователь может быть в нескольких кликах, а клика может иметь несколько пользователей.
Я хочу, чтобы при создании клики пользователь автоматически добавлялся в клику как участник.
Итак, в моем файле views.py
я переопределяю метод perform_create()
следующим образом:
class CreateClique(generics.CreateAPIView):
'''
This class creates a Clique for the user who made the
request.
'''
# define the serializer class
serializer_class = CliqueSerializer
# we use token authentication
authentication_classes = (TokenAuthentication,)
# user must be authenticated
permission_classes = (permissions.IsAuthenticated,)
def perform_create(self, serializer):
user = self.request.user # get the user
data = self.request.data # get the data the user has sent
# first check if we have the name of the clique
if 'name' in data:
name = data['name'] # retrieve the clique name
clique = Clique.objects.create(name=name)
clique.members.add(user)
serializer.save()
Но когда я создаю клику (например, с именем «Test»), у меня есть 2 экземпляра этой клики в моей базе данных. Я вижу это через команду оболочки:
>>> from users.models import Clique
>>> cl = Clique.objects.all()
>>> cl
<QuerySet [<Clique: Test>, <Clique: Test>]>
>>>
Почему это происходит? И как я могу это исправить?