gpt4 book ai didi

django - 将 Django 模型选择字段与 React js 选择选项连接的最佳方式是什么

转载 作者:行者123 更新时间:2023-12-04 17:26:31 25 4
gpt4 key购买 nike

我发现自己被困在处理 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 表单链接。提前致谢

最佳答案

所以我想起了 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 状态下管理它并执行它应该做的事情。中提琴!!!!!

关于django - 将 Django 模型选择字段与 React js 选择选项连接的最佳方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62935570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com