DUM*_*MBA 5 django django-rest-framework reactjs
我发现自己陷入了处理 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"),
)
)
Run Code Online (Sandbox Code Playgroud)
我似乎无法弄清楚如何使这些选择成为我在 React 形式中的选择选项。我在想也许解决方案可能是在我的序列化器中验证或清理这些选择,但我坚持如何特别是与反应表单链接。提前致谢
所以我想起了 Beazley 的 Python 内置超级英雄教程或类似的东西,并想出了这个解决方案。就 DRY 原则而言,可能不是最好的,但它就像一种魅力,对于那些在同一问题上苦苦挣扎而又没有其他办法的人来说,我是这样做的:
ACCOUNT_TYPES_CATEGORY_CHOICES = [
(100, 'Do Not Choose Me'),
(0, 'Asset'),
(1, 'Liability'),
(2, 'Equity'),
(3, 'Revenue'),
(4, 'Operating Expense')
]
Run Code Online (Sandbox Code Playgroud)
我将这些选择放在一个单独的文件中。
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)
Run Code Online (Sandbox Code Playgroud)
我导入了该文件并将其放入我的模型中并调用 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)
Run Code Online (Sandbox Code Playgroud)
我为它创建了一个 api 端点。我知道这可能工作量太大,但确实有效。将其转换为字典,然后通过 .items() 将其解包,分配值和键,然后在 Response 中返回它就可以了。将其称为端点允许我在 redux 状态下管理它并执行它应该执行的操作。维奥拉!!!!
| 归档时间: |
|
| 查看次数: |
1478 次 |
| 最近记录: |