Django Создание отдельной копии модели при каждой регистрации пользователя

Итак, я действительно новичок в Django. Я работал над приложением в рамках задания, которое требует от меня создать webapp с функцией входа, Далее администратор должен создать несколько задач, которые будут общими для всех пользователей. Итак, вот модель, которая будет содержать все задачи и будет управляться администратором:

from django.db import models

# Create your models here.
class applib(models.Model):
  status_code=[
    ('C','Completed'),
    ('P','Pending'),
  ]
  title = models.CharField(max_length=50)
  status=models.CharField(max_length=2,choices=status_code)
  point = models.IntegerField()
  category= models.CharField(max_length=50)
  subcat = models.CharField(max_length=50)
  applink = models.CharField(max_length=100)
  def __str__(self):
      return self.title

Теперь я обошел функциональность входа в систему, и хочу, чтобы при каждом входе в систему копия этой модели прикреплялась к пользователю, чтобы у пользователя был свой собственный набор задач. Он должен иметь возможность отслеживать эти задачи и выполнять их самостоятельно. Как мне это сделать, не создавая отдельные модели задач для каждого пользователя. Я знаю, что есть действительно простое объяснение и решение, но все, что я знаю сейчас, это то, что я хочу наследовать задачи от основной модели для каждого пользователя при его создании.

Спасибо.

Вам необходимо добавить поле user к AppLib (изменить classname на CamelCase).

class AppLib(models.Model):
    ...
    user = models.ForeignKey(settings.AUTH_USER_MODEL, models.CASCADE, related_name="tasks")
    ...

Таким образом, в панели администратора вы можете назначать задания конкретному пользователю

В вашем классе администратора AppLib вы можете модифицировать метод get_queryset, чтобы показывать только задачи, связанные с текущим пользователем:

@admin.register(AppLib)
AppLibAdmin(admin.ModelAdmin):
    ...
    def get_queryset(self, request):
        return super().get_queryset(request).filter(user=request.user)

Вернуться на верх