Angular 8, Django 3. На сервере я использую generics.RetrieveUpdateDestroyAPIView
. На стороне Angular у меня есть служба, которая использует поле id
, взятое из ActivatedRoute
, для поиска модели Restaurant
. Все это прекрасно работает.
Что я хочу сделать, это после того, как я внес изменения в модель, я хочу отправить эти обновления в представление RetrieveUpdateDestroyAPIView
. Но я не знаю, как передать как новый Restaurant
объект (initial_restaurant
), так и параметр id
, поэтому RetrieveUpdateDestroyAPIView
знает, какой Restaurant
обновить ...
Я думаю, что я буду определенно нужно создать другую сервисную функцию, которая является http.post
или http.patch
, но я не знаю, как одновременно отправить id
в urls.py и объект одновременно ..
DjangoView
class RestaurantEdit(generics.RetrieveUpdateDestroyAPIView):
serializer_class = RestaurantEditSerializer
queryset = Restaurant.objects.all()
RestaurantEditComponent
initial_restaurant: RestaurantEdit
id:string
ngOnInit() {
this.id = this.route.snapshot.paramMap.get('id')
this.get_restaurant(this.id)
console.log(this.initial_restaurant)
}
get_restaurant(id){
this.restaurantservice.restaurantedit(id).subscribe(restaurant => this.initial_restaurant = restaurant)
}
savechanges(id, initial_restaurant){
this.restaurantservice.restaurantedit(id, initial_restaurant).subscribe()
}
}
- я попытался передать две переменные, но это определенно не правильно ..
html
<p>Edit Restaurant </p>
<div *ngIf = "initial_restaurant">
<input type="text" id="name" required
[(ngModel)]="initial_restaurant.name" /><br>
<input type="text" id="food" required
[(ngModel)]="initial_restaurant.food" /><br>
<button (click)="savechanges(initial_restaurant)">Save Changes</button>
</div>
сервис
restaurantedit(id): Observable<Restaurant>{
return this.http.get<Restaurant>(this.restauranteditUrl+'/'+id)
}
urls.py
urlpatterns = [
path(r'restaurantedit/<int:pk>', RestaurantEdit.as_view(), name='restaurantedit')
]