유형 1 사용자가 게시물을 만들고 유형 1 사용자가 게시물에 입찰 할 수있는 장고 프로젝트를 만들었습니다. 마지막으로 경매가 발생하고 post_owner가 입찰을 수락 할 수 있습니다. 이 모든 과정이 끝나면 post 인스턴스를 데이터베이스에서 제거하여 post_queryset에 나타나지 않게하려고합니다. 이를 위해 경매 후 수신 된 신호를 사용하여 시도했으며 Post 모델에서 인스턴스를 삭제하기 전에 보관했습니다. 그러나 이것은 효과가 없습니다. 이 문제를 해결하기위한 접근 방법이 있습니까? 나는 이것을 성취하는데 나를 도와 주셔서 감사합니다.Python/Django : 작업 후에 인스턴스를 자동으로 삭제하는 방법은 무엇입니까?
Models.py : 여기
내 코드의class Post(models.Model):
item = models.CharField(max_length=20)
post_owner = models.OneToOneField(settings.AUTH_USER_MODEL, default=1)
date = models.DateField()
accepted = models.BooleanField(default = False)
objects = PostQuerySet.as_manager()
class Bid(models.Model):
post = models.ForeignKey(Post, related_name = bids)
amount = models.IntegerField(max_length = 20)
bidder = models.ForeingKey(settings.AUTH_USER_MODEL)
class Auction(models.Model):
post = models.OneToOneField(Post)
post_owner = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True)
bid = models.OneToOneField('truck.Bid', related_name='auctions')
class PostQuerySet(models.QuerySet):
@receiver(post_save, sender=Auction)
def delete(self, sender, instance, *args, **kwargs):
instance.from1.delete
super(PostQuerySet, self).delete(*args, **kwargs)
forms.py :
class AcceptedForm(forms.ModelForm):
accepted = forms.BooleanField(required=False)
class Meta:
model = Post
fields = ('accepted',)
Views.py :
def accept_bid(request, post_id, bid_id):
post = get_object_or_404(Post, id=post_id)
bid = get_object_or_404(Bid, id=bid_id)
if request.method=='POST':
form = AuctionForm(request.POST or None)
form1 = AcceptedForm(request.POST)
if form.is_valid() and form1.is_valid():
accept_bid = form.save(commit=False)
accept_bid.bid = bid
accept_bid.post = post
accept_bid.post_owner = request.user
accept_bid.accepted = form1.save()
accept_bid.save()
form.save()
form1.save()
else:
form = AuctionForm()
form1 = AcceptedForm()
context = {
"bid_id" : bid_id,
"post_id" : post_id,
"bid": bid,
"post":post,
'form':form,
'form1': form1,
}
return render(request, 'loggedin_load/active_deals.html', context)
이 Adam_Starrh @, 내가했다. 내 accept_bid보기에서이 값을 내 질문에 ModelForm (AcceptedForm) 함께 전달합니다. 여기서는 Boolean_Field 값을 저장하면서 accept_bid 인스턴스를 저장하는 뷰를 만들었습니다. 그러나 인스턴스를 저장할 때 IntegrityError : (1048, "Column 'date'는 null 일 수 없음)을 반환합니다. 이 문제에 대해 저를 도울 수 있습니까? – sumanth
모델의 'date' 필드에 정보를 전달하거나이 필드에'null = True'를 설정해야하는 것처럼 들립니다. 추가 도움이 필요하면 모델과 뷰를 새로운 질문에 게시하십시오. –