连接Django模型选择字段和React js选择选项的最佳方法是什么

杜邦

我发现自己陷入了处理Django模型选择字段并做出选择的反应。愿有人帮助。这是我的模型代码:

class AccountType(models.Model):

    category = models.SmallIntegerField(
        choices=(
            (AccountCategories.ASSET, "Asset"),
            (AccountCategories.LIABILITY, "Liability"),
            (AccountCategories.EQUITY, "Equity"),
            (AccountCategories.REVENUE, "Revenue"),
            (AccountCategories.EXPENSE, "Operating Expense"),
        )
    )

    classification = models.SmallIntegerField(
        choices=(
            (AccountClassifications.NONE, ""),
            (AccountClassifications.CURRENT, "Current"),
            (AccountClassifications.NONCURRENT, "Long-Term"),
        )
    )

我似乎无法弄清楚如何使这些选择成为我在React表单中的选择选项。我在想也许解决方案可能是在序列化器中验证或清除这些选择,但是我仍然特别关注如何与React Form链接。提前致谢

杜邦

所以我想起了Beazley关于Python内置SuperHeros的教程或类似的东西,并提出了这个解决方案。就DRY原则而言,可能不是最好的方法,但它就像一种魅力,对于任何在同一问题上苦苦挣扎且无可奈何的人,我就是这样做的:

  ACCOUNT_TYPES_CATEGORY_CHOICES = [
        (100, 'Do Not Choose Me'),
        (0, 'Asset'),
        (1, 'Liability'),
        (2, 'Equity'),
        (3, 'Revenue'),
        (4, 'Operating Expense')

    ]

我将选择放在单独的文件中。

class AccountType(models.Model):
    class Meta:
        ordering = ['order']

    objects = AccountTypeManager()

    category = models.IntegerField(choices=ACCOUNT_TYPES_CATEGORY_CHOICES)

    classification = models.IntegerField(choices=ACCOUNT_TYPES_CLASSIFICATION_CHOICES)

我导入了文件并将其放入模型中,并称为python manage.py makemigrations

 class AccountingPeriodsChoicesAPIView(views.APIView):


    def get(self, request, format=None):

        my_choices = []
        choice_dict = dict(ACCOUNTING_PERIODS_CHOICES)
        for key, value in choice_dict.items():

            itered_dict = {"key": key, "value": value}
            my_choices.append(itered_dict)
        return Response(my_choices, status=status.HTTP_200_OK)

我为此创建了一个api端点。我知道这可能需要太多工作,但确实可以。将其转换为字典,然后通过.items()对其进行解压缩,然后分配值和键,然后在Response中将其返回即可。将其称为终结点使我可以在redux状态下对其进行管理,并可以执行其应做的事情。Violla !!!!!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章