我试图从下面的模型中显示版本字段,而不是默认的str是 field2_name:
注意:这个 SO 链接Displaying a specific field in a django form可能比我需要的更多,但我不是 100% 确定。我试图实现这一点,但没有成功。
另请注意,我在https://docs.djangoproject.com/en/1.10/ref/forms/fields/尝试了示例,但无法使其正常工作
型号(通用名称):
class CodeVersion(models.Model):
field1= models.ForeignKey(SomeOtherModel, on_delete=models.CASCADE)
field2_name = models.CharField(max_length=256)
field3_description = models.CharField(max_length=1000, blank=True)
version = models.PositiveIntegerField()
def __str__(self):
return self.field2_name
Run Code Online (Sandbox Code Playgroud)
形式:
class VersionsForm(forms.Form):
code_versions = forms.ModelChoiceField(queryset=CodeVersion.objects.none())
def __init__(self, SomeOtherModel_id):
super(VersionsForm, self).__init__()
self.fields['infocode_versions'].queryset = CodeVersion.objects.filter(SomeOtherModel_id=SomeOtherModel_id)
Run Code Online (Sandbox Code Playgroud)
这有效 - 它按预期返回 field2_name 。
我该如何返回版本 - 最简单的方法是什么?
任何帮助或指导表示赞赏。
我正在调整字符串,以便字符串的第一个字母以及破折号或斜杠后面的第一个字母需要大写。
所以下面的字符串:
test/string - 这是一个测试字符串
应该看起来像这样:
测试/字符串 - 这是一个测试字符串
因此,在尝试解决这个问题时,我的第一个想法似乎是一个坏主意 - 迭代字符串并检查每个字符并使用索引等。确定字符是否跟在破折号或斜杠后面,如果它确实将其设置为大写并写出到我的新字符串。
def correct_sentence_case(test_phrase):
corrected_test_phrase = ''
firstLetter = True
for char in test_phrase:
if firstLetter:
corrected_test_phrase += char.upper()
firstLetter = False
#elif char == '/':
else:
corrected_test_phrase += char
Run Code Online (Sandbox Code Playgroud)
这看起来非常不Pythonic。处理这个问题的Pythonic方法是什么?
类似于以下内容的东西会很棒,但我不能同时传递破折号和斜线来进行分割:
corrected_test_phrase = ' - '.join(i.capitalize() for i in test_phrase.split(' - '))
Run Code Online (Sandbox Code Playgroud)
我从这个SO得到的:
任何帮助将不胜感激 :)