IP 및 URL과 필수 필드가있는 필드가있는 평가 모델이 있습니다. request.POST에서 이러한 필드 중 일부가 표시되지만 ip 및 url을 내보기에서 modelform으로 전달해야합니다. 내 모델 : 내 views.py에서Django 모델 폼에 request.POST와 함께 추가 매개 변수를 전달하십시오.
class Rating(models.Model):
rating = core_fields.SmallIntegerRangeField(min_value=1, max_value=5)
url = models.URLField(max_length=2048)
tracker = models.ForeignKey("core.Tracker", db_index=True)
ip = models.GenericIPAddressField(db_index=True)
user_agent = models.CharField(max_length=100)
object_id = models.PositiveIntegerField(db_index=True)
_content_type = models.ForeignKey(ContentType, db_index=True)
special_object = GenericForeignKey('_content_type', 'object_id')
class Meta:
unique_together = ['_content_type', 'tracker', 'object_id']
verbose_name = ('rating')
:
form = RatingModelForm(request.POST, ip=ip, url=url)
if form.is_valid():
instance = form.save(commit=False)
instance.save()
그리고 내 forms.py의 : 초기 값하지만 form.is_valid을 설정
class RatingModelForm(forms.ModelForm):
class Meta:
model = Rating
exclude = ('special_object',)
def __init__(self, *args, **kwargs):
ip = kwargs.pop('ip', None)
url = kwargs.pop('url', None)
super(RatingModelForm, self).__init__(*args, **kwargs)
self.fields['ip'].initial = ip
self.fields['url'].initial = url
내가 시도 ()는 False와를 제공하고 ip와 url이 필요하다는 것을 나타냅니다. 이걸 어떻게 처리할까요?
답변 주셔서 감사합니다. 그러나 request.POST는 필자의 경우 불변의 쿼리입니다. 그것을 수정할 수 없습니다 –
@roushankumar 내 대답을 수정했습니다. – Jonathan
@roushankumar 그게 도움이 되었습니까? – Jonathan