关于如何在Django Admin中添加多个access_token和items_ids,我有点难过 . 涉及的模型和应用程序如下 . 这是我的第一篇文章,请原谅,如果格式不正确 .
反式/ models.py
class Exchange(models.Model):
created = models.DateTimeField()
owner = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='token', on_delete=models.CASCADE)
access_token = models.CharField(max_length=300, blank=True, default='')
item_id = models.CharField(max_length=300, blank=True, default='')
request_id = models.CharField(max_length=300, blank=True, default='')
class Meta:
ordering = ('item_id',)
我为管理员设置了一个userprofile部分:
用户/ models.py
class UserProfile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, primary_key=True, verbose_name='user', related_name='profile', on_delete=models.CASCADE)
avatar_url = models.CharField(max_length=256, blank=True, null=True)
dob = models.DateField(verbose_name="dob", blank=True, null=True)
public_token = models.CharField(max_length=100, blank=True, null=True, verbose_name='public_token')
access_token = models.CharField(max_length=100, blank=True, null=True, verbose_name='access_token')
item_id = models.CharField(max_length=100, blank=True, null=True, verbose_name='item_ID')
just_signed_up = models.BooleanField(default=True)
def __str__(self):
return force_text(self.user)
class Meta():
db_table = 'user_profile'
用户/ forms.py
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('user', 'public_token', 'access_token', 'item_id',)
用户/ admin.py
class UserProfileAdmin(admin.ModelAdmin):
search_fields = ('user', 'dob', 'public_token', 'access_token', 'item_id',)
ordering = ('user',)
list_select_related = ('user',)
admin.site.register(UserProfile,UserProfileAdmin)
class UserProfileAdminInline(admin.TabularInline):
model = UserProfile
我真的很难过,因为我尝试制作多个到多个字段,但似乎无法正确链接,或者在沙箱环境中测试时进程中断了 . 任何帮助将不胜感激!在我的情况下,我需要为每个用户记录多个access_tokens和item_ids .
1 回答
你问的问题有点令人困惑......特别是你的数据模型的设置方式......但是我会在答案中做出一些假设(这有助于更好地理解你是什么试图在高水平做) .
我认为你想要做的是能够为每个用户配置文件配置多个
Exchange
对象...在这种情况下我会这样设置:1 . FK上的related_name
字段到交换模型中的用户配置文件将是你如何访问多个交易所...所以在这种情况下,你可能想要一个复数名称 . 2.为了能够在Django Admin中编辑多个,您需要设置InlineAdmin对象 . 3.实际上在UserProfile
上的CharFields将只是单个字段...如果你想要多个,那么你需要将它们移动到另一个相关对象(如Exchange
模型) . 4.我不认为你想要的是ManyToMany
,因为这意味着用户将共享这些令牌和项目ID(或交换?)......但也许这就是你想要的......在这种情况下你应该将ForeignKey
从Exchange
模型更改为UserProfile
到ManyToManyField
. 本文的其余部分假设您不希望如此 .反式/ models.py
用户/ models.py
用户/ admin.py
你可以做很多事情来配置内联以表现你想要的......但这是基础知识 .