、、、、、またはその他の数学文字記号を。に含めることはできないことに気付き-
ました。、、、またはも使用できません。+
/
*
related_name
:
|
.
上記の文字のいずれかがに含まれている場合related_name
、Djangomodels.py
は検証しますが、クエリルックアップを実行すると、次のようなエラーがスローされます。
Q(userprofile.user__place__managers=user)
SyntaxError: keyword can't be an expression
特殊文字を使用したいのはrelated_name
、の形をしたいからです{class_name}{field_name}
。たとえば、UserProfile
モデルクラスの場合、次のようにします。
class UserProfile(models.Model)
user = models.OneToOneField(User, related_name='userprofile-user')
user_type = models.ManyToManyFields(UserType, related_name='userprofile-user_type')
そうすれば、関係を逆方向に追跡することを含むクエリを実行しますが、それでも、関係を逆方向に追跡する方法を知っています。たとえば、私が単にする場合
user_type = models.ManyToManyFields(UserType, related_name='user_type')
その後、私はを行うことUserType
からアクセスできます。しかし、これにより、のフィールドのように見えます。User
User.objects.get(pk=1).user_type.all()
user_type
User
代わりに、私がそのようなことをすることができれば、私はからにUser.objects.get(pk=1).userprofile-user_type.all()
行くことを知っているでしょう。User
UserProfile
UserType
私の考え方はおそらく少数派であり、ほとんどの人はrelated_name='user_type'
デフォルトを使用するか、使用することさえあると思いますuser_type_set
。
別の質問は次のようになります:命名の良いスタイルは何related_name
ですか?