我有一个用于上传文件的模型,现在我需要在该模型中有两个标签字段。一种用于用户标签,另一种用于管理员标签。我已经尝试了几种解决方案,但是都没有用。
这是我的代码,现在不起作用。不知道这是否要创建两个单独的表,一个用于用户标签和管理标签,因此将不胜感激。另外,如果您可以向我解释因为迷路而正在做什么。
program_spec.rb
答案 0 :(得分:0)
我会尝试像这样实现它。
from django.db import models
from taggit.managers import TaggableManager
from taggit.models import TaggedItemBase, ItemBase
class AdminTag(ItemBase):
pass
class UserTag(ItemBase):
pass
class ThroughAdminTag(TaggableManager):
content_object = models.ForeignKey('AdminTag', on_delete=models.CASCADE)
class ThroughUserTag(TaggableManager):
content_object = models.ForeignKey('UserTag', on_delete=models.CASCADE)
# Model for all uploaded files
class Uploaded(models.Model):
objects = models.Manager()
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="users")
time_uploaded = models.DateTimeField(auto_now_add=True)
name = models.CharField(max_length=50)
file = models.FileField(upload_to=MEDIA_ROOT)
tag = TaggableManager(blank=True, through=ThroughUserTag, related_name='user_tags')
tags = TaggableManager(blank=True, through=ThroughAdminTag, related_name='admin_tags')
additional_description = models.CharField(max_length=50, blank=True)
def __str__(self):
return f"{self.name} {self.file}"
不确定AdminTag
和UserTag
是否需要任何字段。从理论上讲,从ItemBase
继承它们应该可以解决这一问题。