小编Tik*_*itu的帖子

如何在Django Admin中访问ManyToManyField的两个方向?

Django管理员filter_horizontal设置为编辑多对多关系提供了一个很好的小部件.但这是一个特殊的设置,需要一个字段列表,所以它只能在(admin for the)模型中定义ManyToManyField; 如何在(其他模型的管理员)上获取相同的小部件,向后阅读关系?

我的模型看起来像这样(可以随意忽略User/ UserProfile复杂化;但它是真正的用例):

class Site(models.Model):
    pass
class UserProfile(models.Model):
    user = models.OneToOneField(to=User,unique=True)
    sites = models.ManyToManyField(Site,blank=True)
Run Code Online (Sandbox Code Playgroud)

我可以在管理表单上获得一个不错的小部件UserProfile

filter_horizontal = ('sites',)
Run Code Online (Sandbox Code Playgroud)

但无法看到如何获得Site管理员的等价物.

我也可以通过添加内联来获得部分SiteAdmin,定义为:

class SiteAccessInline(admin_module.TabularInline):
    model = UserProfile.sites.through
Run Code Online (Sandbox Code Playgroud)

虽然这是迂回而且不方便; 对于简单地管理多对多关系,小部件根本不直观.

最后,这里描述的一个技巧涉及定义另一个ManyToManyFieldon Site并确保它指向同一个数据库表(并跳过一些箍,因为Django实际上并不是设计为在描述相同数据的不同模型上具有不同的字段).我希望有人能告诉我更清洁的东西.

django many-to-many django-admin

11
推荐指数
1
解决办法
2794
查看次数

Django:通过具有(仅)复合键的表的多对多

我有一个遗留数据库,其中一个表存储多对多关系,但没有一个主键列.有没有办法说服Django使用它呢?

示意图:

Product 1<---->* Labeling *<---->1 Label
Run Code Online (Sandbox Code Playgroud)

Labeling(product_id,label_id)用作复合主键,我没有看到任何方式通知Django这个.(只是使用through给我Unknown column 'labeling.id' in 'field list'.)

我是否需要回退到自定义SQL?或者我错过了什么?

django many-to-many django-models

6
推荐指数
1
解决办法
2629
查看次数

Swift Codable:如何“传递”未分析的 json 子对象

由于复杂的原因,我发现自己在违背以下原则Codable:在解码 json 对象时,我想将子对象保留在extra“just as json”键下,存储为[String: Any]字典,但[String: Any](当然)不是Decodable。有什么办法可以做到这一点吗?

第一个答案当然是“不”。我的回答是“我需要”:我需要对数据进行两次 Codable传递,其中第一次解码异构对象列表(每个对象都有一个 key name),而第二次传递使用以这些值为键的字典name,并且是正确类型安全的。第一遍不能是类型安全的,因为它在异构列表上操作,但它需要保留第二遍将使用的所有数据。值得庆幸的是,所有异构数据都隐藏在该extra密钥下,但我仍然不知道该怎么做。

(很可能会有一个关于编码相同内容的后续问题,所以如果您碰巧有洞察力,请随时提及。)

swift codable

3
推荐指数
1
解决办法
1777
查看次数