所以,我對 Django 真的很陌生。作為任務的一部分,我正在處理一個應用程式,該任務要求我構建一個具有登錄功能的 web 應用程式,此外,管理員應該創建一些所有用戶都通用的任務。所以這里是包含所有任務并由管理員控制的模型:
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
現在我已經解決了登錄功能,并且我希望在每次登錄時都將該模型的副本附加到用戶,以便用戶可以擁有自己的一組任務。他應該能夠跟蹤這些任務并獨立完成這些任務。如何在不為每個用戶創建單獨的任務模型的情況下做到這一點。我知道會有一個非常簡單的解釋和解決方案,但我現在只知道我想在創建用戶時為每個用戶從主模型繼承任務。
謝謝你。
uj5u.com熱心網友回復:
您需要向您添加一個user欄位AppLib(將類名更改為 CamelCase)。
class AppLib(models.Model):
...
user = models.ForeignKey(settings.AUTH_USER_MODEL, models.CASCADE, related_name="tasks")
...
這樣,在管理面板中,您可以將任務分配給特定用戶
如果要將任務分配給一組用戶:
from django.contrib.auth import get_user_model
...
class AppLib(models.Model):
...
users = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name="tasks")
...
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
# only fetch users that are active
users = list(get_user_model()._default_manager.filter(
is_active=True).values_list("pk", flat=True))
self.users.add(*users)
在admin.py:
from django.contrib.auth import get_user_model
from django.contrib import admin
from <model_module> import AppLib
@admin.register(AppLib)
class AppLib(admin.ModelAdmin):
...
def save_related(self, request, form, formsets, change):
super().save_related(request, form, formsets, change)
users = list(get_user_model()._default_manager.filter(
is_active=True).values_list("pk", flat=True))
form.instance.users.add(*users)
在此處閱讀有關此邏輯的更多資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/519843.html
